当前位置: 首页> 函数类别大全> curl_multi_info_read

curl_multi_info_read

获取当前解析的cURL的相关传输信息
名称:curl_multi_info_read
分类:CURL
所属语言:php
一句话介绍: 获取当前解析的cURL的相关传输信息

curl_multi_info_read 函数

适用PHP版本:PHP 4及以上版本。

函数说明:
curl_multi_info_read() 是一个用于获取通过 curl_multi_exec() 执行的多个 cURL 请求的执行结果信息的函数。当使用 curl_multi_exec() 处理多个并行 cURL 请求时,该函数可以用来读取每个请求的执行状态,帮助你获取请求的结果或错误信息。

函数语法:
array curl_multi_info_read ( resource $multi_handle [, int &$msgs_in_queue ] )

参数:

  • $multi_handle:必需,指定一个由 curl_multi_init() 返回的 cURL 多重句柄。
  • $msgs_in_queue:可选。传入一个整数变量,该变量将接收队列中剩余未读取的消息数。

返回值:
返回一个关联数组,包含以下信息:

  • handle:对应的 cURL 句柄(可以通过 curl_getinfo() 获取相关请求信息)。
  • result:请求的结果码,通常是CURLE_OK表示成功,其他值表示不同的错误。
如果没有更多的消息可读取,返回值为 NULL。

示例:

下面的示例展示了如何使用 curl_multi_info_read() 函数在执行多个并行请求时读取它们的状态信息。

<?php
// 初始化多个 cURL 会话
$mh = curl_multi_init();

// 创建两个 cURL 请求
$ch1 = curl_init('https://www.example.com');
$ch2 = curl_init('https://www.example.org');

// 设置选项
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

// 将请求加入多重句柄
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);

// 执行多重请求
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($active);

// 获取并处理每个请求的执行信息
while ($info = curl_multi_info_read($mh)) {
    if ($info['result'] === CURLE_OK) {
        echo "请求成功: " . $info['handle'] . "\n";
    } else {
        echo "请求失败: " . curl_error($info['handle']) . "\n";
    }
}

// 关闭 cURL 会话
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>

示例代码的说明:
1. 首先初始化一个 cURL 多重句柄($mh),然后创建两个单独的 cURL 会话($ch1 和 $ch2)。
2. 使用 curl_setopt() 配置这两个请求,设置它们返回结果为字符串(CURLOPT_RETURNTRANSFER)。
3. 将两个 cURL 请求添加到多重句柄中,通过 curl_multi_add_handle() 完成。
4. 使用 curl_multi_exec() 执行多个请求,在执行过程中不断检查是否所有请求都已完成。
5. 通过 curl_multi_info_read() 获取每个请求的状态信息,并根据结果执行不同的操作(例如,打印成功或失败信息)。
6. 最后,移除和关闭 cURL 句柄,释放资源。

同类函数